const { DataTypes } = require('sequelize')
const seq = require('../utils/seq')
const moment = require('moment')

// 文件资源不需要数据库表
/**文件资源 
 *文件id：id UUID
  文件名称：name string
  文件父级id：pid 上级目录id
  文件大小（文件夹没有大小）：size Integer
  是否目录：is_dir Boolean (true 文件夹 /false 文件 )
  文件地址：path（设计文件、目录的地址）String
  文件扩展名：extension String
  是否共享：share JSON { is_share: false, path: '' }
  用户id：uid UUID
  创建时间：ctime string
  修改时间：mtime string
 */
module.exports = seq.define('resource', {
  id: {
    type: DataTypes.UUID,
    primaryKey: true,
    allowNull: false,
    defaultValue: DataTypes.UUIDV4,
    comment: 'uuid'
  },
  name: {
    type: DataTypes.STRING,
    allowNull: false,
    comment: '资源名称'
  },
  pid: {
    type: DataTypes.UUID,
    allowNull: true,
    comment: '上级目录id'
  },
  size: {
    type: DataTypes.INTEGER,
    allowNull: true,
    defaultValue: 0,
    comment: '资源大小'
  },
  is_dir: {
    type: DataTypes.BOOLEAN,
    allowNull: false,
    defaultValue: false,
    comment: '是否目录'
  },
  path: {
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '',
    comment: '文件地址'
  },
  extension: {
    type: DataTypes.STRING,
    allowNull: true,
    comment: '文件扩展名'
  },
  share: {
    type: DataTypes.JSON,
    allowNull: false,
    defaultValue: { 'is_share': false, path: '' },
    comment: '是否共享'
  },
  uid: {
    type: DataTypes.UUID,
    allowNull: false,
    comment: '用户表外键'
  },
  ctime: {
    type: DataTypes.STRING,
    defaultValue: moment().format('YYYY-MM-DD HH:mm:ss'),
    comment: '创建时间'
  },
  mtime: {
    type: DataTypes.STRING,
    defaultValue: moment().format('YYYY-MM-DD HH:mm:ss'),
    comment: '更改时间'
  }
})